﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PresentacionWindows.Base;
using Integra.Comun;
using Negocio.Generico;

namespace PresentacionWindows
{
    public partial class uscMiniUnidadRenglon : UserControlBase
    {

        #region atributos

        private RenglonDTO renglon;

        public event EventHandler btnEliminarE;
        public event EventHandler btnModificarE;

        #endregion

        #region Propiedades

        /// <summary>
        /// Obtiene o establece el valor del renglon
        /// </summary>
        public RenglonDTO Renglon
        {
            get { return renglon; }
            set { renglon = value; }
        }


        #endregion

        #region Constructor, inicializacion


        public uscMiniUnidadRenglon(RenglonDTO objeto)
        {
            Renglon = objeto;
            InitializeComponent();
            DsToBinding();
        }

        #endregion

        #region Funciones privadas

        private void DsToBinding()
        {
            //Cargamos los combos
            ControlDatos.CargarCombo(this.cboTipoRenglon, typeof(TipoRenglon), TipoCargaCombo.Normal);

            //Se cargan los valores del renglon dentro de la aplicación
            this.txtTitulo.Text = Renglon.Nombre;
            this.cboTipoRenglon.SelectedValue = Renglon.CoTipoRenglon;
            this.dtFchCreacion.Value = (DateTime)Renglon.FchCreacion;
            this.dtFchRequerimiento.Value = (DateTime)Renglon.FchRequerimiento;
            this.chkPublica.Checked = (bool)Renglon.Publico;

        }

        #endregion

        #region Eventos

        private void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                btnModificarE(sender, new CoRenglonEventArgs(Renglon.CoRenglon, TipoAccion.Modificacion));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error en la modificación del renglon.Excepcion:" + ex.Message);
            }
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            try
            {
                btnEliminarE(sender, new CoRenglonEventArgs(Renglon.CoRenglon,TipoAccion.Eliminacion));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Se ha producido un error eliminando el renglon: Excepcion:"+ex.Message);
            }
        }

        #endregion

        private void cboTipoRenglon_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (Int32.Parse(this.cboTipoRenglon.SelectedValue.ToString()) == (int)TipoRenglon.Practicas)
            {
                this.label3.Visible = true;
                this.dtFchRequerimiento.Visible = true;
            }
            else 
            {
                this.label3.Visible = false;
                this.dtFchRequerimiento.Visible = false;
            }
        }
    }


    public class CoRenglonEventArgs : EventArgs
    {
        private TipoAccion tipoAccion;

        public int? Valor { get; set; }

        public TipoAccion TipoAccionE { get; set; }

        public CoRenglonEventArgs(int? valor, TipoAccion Accion)
            : base()
        {
            this.Valor = valor;
            this.TipoAccionE = Accion;

        }

 
    }
}
